import router, { addAsyncRoutes } from './router';
import NProgress from 'nprogress';

router.beforeEach(async (to, from) => {
  NProgress.start();
  // 有token
  if (getToken()) {
    // 要进入的页面是登录页，则直接跳转到首页
    if (to.path === '/login') {
      // 跳转到首页
      return { path: '/' };
    }
    // 判断是否含有角色，不含则尝试获取登陆用户权限信息，未获取则跳转到登陆
    const { roles, getUserInfo } = useUserStore();
    if (!roles.length) {
      // 获取角色信息
      await getUserInfo();

      const { getRoutes } = usePermissionStore();
      // 获取路由
      const routes = await getRoutes();

      routes && addAsyncRoutes(buildAsyncRoutes(routes));
      // 重定向到去往的路由
      return { ...to, replace: true };
    }
    return true;
  }
  // 没有token
  // 在白名单中
  if (to.meta.isWhite) {
    return true;
  }
  // 不在白名单中，跳转到登陆
  return `/login?redirect=${to.fullPath}`;
});

router.afterEach((to, from) => {
  // 进度条
  NProgress.done();
});
